package xxl.signals.impl.natives.sets 
{
	import flash.display.DisplayObject;
	import flash.events.Event;
	import xxl.signals.api.natives.INativeDispatcher;
	/**
	 * ...
	 * @author XXL
	 */
	public class DisplayObjectSignalSet extends EventDispatcherSignalSet 
	{
		
		public function DisplayObjectSignalSet(target:DisplayObject, maybeRepeat:Boolean = false) 
		{
			super(target, maybeRepeat);
		}
		
		/**
		 * 将显示对象添加到显示列表中时调度。
		 */
		public function get added():INativeDispatcher
		{
			return getNativeSignal(Event.ADDED);
		}
		
		/**
		 * 在将显示对象直接添加到舞台显示列表或将包含显示对象的子树添加至舞台显示列表中时调度。
		 * 注意：此事件不具有“冒泡阶段”，如果希望监听的是子显示对象的事件，请使用addedToStage_Capture
		 */
		public function get addedToStage():INativeDispatcher
		{
			return getNativeSignal(Event.ADDED_TO_STAGE);
		}
		
		/**
		 * 在将显示对象直接添加到舞台显示列表或将包含显示对象的子树添加至舞台显示列表中时调度。
		 * 注意：此事件不具有“冒泡阶段”，如果希望监听的是target显示对象自己的事件，请使用addedToStage
		 */
		public function get addedToStage_Capture():INativeDispatcher
		{
			return getNativeSignal(Event.ADDED_TO_STAGE, null, true);
		}
		
		/**
		 * 播放头进入新帧时调度。
		 * 注意：此事件既不具有“捕获阶段”也不具有“冒泡阶段”
		 */
		public function get enterFrame():INativeDispatcher
		{
			return getNativeSignal(Event.ENTER_FRAME);
		}
		
		/**
		 * 播放头结束当前帧时调度，所有的帧代码（可配合addFrameScript）已经执行完毕。
		 * 注意：此事件既不具有“捕获阶段”也不具有“冒泡阶段”
		 */
		public function get exitFrame():INativeDispatcher
		{
			return getNativeSignal(Event.EXIT_FRAME);
		}
		
		/**
		 * 在帧显示对象的构造函数执行之后，且帧代码执行之前调度。
		 * 注意：此事件既不具有“捕获阶段”也不具有“冒泡阶段”
		 */
		public function get frameConstructed():INativeDispatcher
		{
			return getNativeSignal(Event.FRAME_CONSTRUCTED);
		}
		
		/**
		 * 将要从显示列表中删除显示对象时调度
		 */
		public function get removed():INativeDispatcher
		{
			return getNativeSignal(Event.REMOVED);
		}
		
		/**
		 * 在从显示列表中直接删除显示对象或删除包含显示对象的子树时调度。
		 * 注意：此事件不具有“冒泡阶段”，如果希望监听的是子显示对象的事件，请使用removeFromStage_Capture
		 */
		public function get removedFromStage():INativeDispatcher
		{
			return getNativeSignal(Event.REMOVED_FROM_STAGE);
		}
		
		/**
		 * 在从显示列表中直接删除显示对象或删除包含显示对象的子树时调度。
		 * 注意：此事件不具有“冒泡阶段”，如果希望监听的是target显示对象自己的事件，请使用removedFromStage
		 */
		public function get removedFromStage_Capture():INativeDispatcher
		{
			return getNativeSignal(Event.REMOVED_FROM_STAGE, null, true);
		}
		
		/**
		 * 将要更新和呈现显示列表时调度。
		 */
		public function get render():INativeDispatcher
		{
			return getNativeSignal(Event.RENDER);
		}
		
	}

}